from datetime import datetime
from flask import Flask
from app.models.mysql_db import db
from app.models.mongodb import init_mongodb
from app.models.user import User
from app.config import Config

def init_db(app=None):
    """初始化数据库，创建默认用户"""
    if app is None:
        app = create_temp_app()
    
    with app.app_context():
        # 创建所有表
        db.create_all()
        
        # 检查是否已有管理员用户
        admin = User.query.filter_by(role='admin').first()
        
        if not admin:
            print("创建默认管理员用户...")
            # 创建默认管理员用户
            admin_user = User(
                username='admin',
                email='admin@example.com',
                nickname='Administrator',
                role='admin'
            )
            admin_user.set_password('admin123456')
            
            db.session.add(admin_user)
            db.session.commit()
            print(f"默认管理员用户创建成功: {admin_user.username}")
        else:
            print("管理员用户已存在，无需创建")
        
        # 打印所有用户
        users = User.query.all()
        print(f"当前系统用户数量: {len(users)}")
        for user in users:
            print(f"- {user.username}, 角色: {user.role}, 邮箱: {user.email}")
    
    print("数据库初始化完成")

def create_temp_app():
    """创建临时应用实例用于数据库操作"""
    app = Flask(__name__)
    
    # 从配置文件加载配置
    app.config.from_object('app.config.Config')
    
    # 初始化数据库
    db.init_app(app)
    init_mongodb(app)
    
    return app

if __name__ == '__main__':
    init_db()